// pages/order-detail/order-detail.js
const orderService =  require( '../../services/order/orderService.js');

var app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    orderNo: null,
    order:null,
    orderDetail:null,
    gotoHome: false
  },

  onBack() {
    wx.navigateBack()
    // wx.switchTab({
    //   url: '/pages/usercenter/index'
    // })
  },

  onGoHome() {
    this.data.gotoHome = true;
    wx.reLaunch({
      url: '/pages/home/home',
    });
  },

  loginCallBack(data){
    this.getOrderDetail();
  },

  getOrderDetail(){
    let orderNo = this.data.orderNo;
    var that = this;

    if(!orderNo){
      console.error("订单号为空")
      return;
    }
    wx.showToast({
      title: '加载中...',
      icon: 'loading',
      duration: 10000,
      mask: true
    })

    // 获取订单状态和订单数据
    wx.request({
      url: app.data.global_urls.getOrderDetailUrl(),
      method: 'GET',
      header:{
        'Authorization': `Bearer ${app.data.loginData.token}`,
        'content-type': 'application/x-www-form-urlencoded'
      },
      data:{
        orderNo
      },
      success(res){
        wx.hideToast();
        if(10024 === res.data.status){
          console.log('Token过期，需重新登录');
          app._needReLogin(null, that.loginCallBack.bind(this));
        }else if(10000 !== res.data.status){
          // 服务器异常
        }else{
          console.log('订单详情获取成功: ', res)
          that.setData({
            order: res.data.data.order,
            orderDetail: res.data.data.orderDetail
          })
        }
      },
      fail(e){
        wx.hideToast();
        console.log('根据订单号获取订单详情获取失败')
      }
    });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log("在订单详情页面：", options);
    this.setData({
      orderNo: options.orderNo
    })
    this.getOrderDetail();

    // 监听返回键事件（需基础库 2.8.0+）
    if (wx.onBeforePageUnload) {
      wx.onBeforePageUnload((res) => {
        // if(this.data.gotoHome){
        //   // 返回主页，不跳转到个人主页
        //   return;
        // }
        console.log('在onAppRoute函数中', res);
        // wx.switchTab({
        //   url: '/pages/usercenter/index',
        // });
      });
    }
  },

  _cancalOrder(){
    var that = this;

    console.log('进入取消订单')
    wx.showToast({
      title: '订单取消中...',
      icon: 'loading',
      duration: 10000,
      mask: true
    })

    orderService.cancelOrder(this.data.orderNo,this.data.order.shopId).then((res) => {
      wx.hideToast();
      if(10000 !== res.status){
        // 数据库插入失败，稍后重试
        console.log(" inSuccess: 获取预支付信息失败", res)
        wx.showToast({
          title: '内部服务错误，请稍后再试',
          icon: 'error',
          duration: 3000,
          mask: true
        });
      }else{
        let order = res.data;
        if(order.orderStatus === 0){
          wx.showToast({
            title: '取消成功',
            icon: 'loading',
            duration: 1500,
            mask: true
          })
          that.setData({
            order
          })
        }else{
          wx.showToast({
            title: '订单取消失败',
            icon: 'loading',
            duration: 1500,
            mask: true
          })
        }
      }
    }).catch(()=>{
      wx.hideToast();
      wx.showToast({
        title: '订单取消失败',
        icon: 'loading',
        duration: 1500,
        mask: true
      })
    }).finally(()=>{
    })

    // wx.request({
    //   url: app.data.global_urls.getCancelOrderUrl(),
    //   method: 'POST',
    //   header:{
    //     'Authorization': `Bearer ${app.data.loginData.token}`,
    //     'content-type': 'application/x-www-form-urlencoded',
    //   },
    //   data:{
    //     orderNo: that.data.orderNo,
    //     shopId: that.data.order.shopId
    //   },
    //   success(res){
    //     wx.hideToast();
    //     if(10024 === res.data.status){
    //       // 需要重新登录
    //       console.log(" inSuccess: 需要重新登录", res)
    //       app._needReLogin(null, null);
    //     }else if(10000 !== res.data.status){
    //       // 数据库插入失败，稍后重试
    //       console.log(" inSuccess: 获取预支付信息失败", res)
    //       wx.showToast({
    //         title: '内部服务错误，请稍后再试',
    //         icon: 'error',
    //         duration: 3000,
    //         mask: true
    //       });
    //     }else{
    //       let order = res.data.data;
    //       if(order.orderStatus === 0){
    //         wx.showToast({
    //           title: '取消成功',
    //           icon: 'loading',
    //           duration: 1500,
    //           mask: true
    //         })
    //         that.setData({
    //           order
    //         })
    //       }else{
    //         wx.showToast({
    //           title: '订单取消失败',
    //           icon: 'loading',
    //           duration: 1500,
    //           mask: true
    //         })
    //       }
          
    //     }
    //   },
    //   fail(e){
    //     wx.showToast({
    //       title: '订单取消失败',
    //       icon: 'loading',
    //       duration: 1500,
    //       mask: true
    //     })
    //   }
    // })
  },

  handleCancelOrder(){
    var that = this;
    orderService.cancelOrderWithInteractive(this.data.order).then((order)=>{
      that.setData({
        order
      })
    })

    // wx.showModal({
    //   title: '警告',
    //   content: '您确定要取消订单吗？',
    //   cancelText: '是',
    //   confirmText: '否',
    //   complete: (res) => {
    //     if (res.cancel) {
    //       that._cancalOrder();
    //     }
    //     if (res.confirm) {
    //     }
    //   }
    // });
  },

  toPayByOrder(){
    orderService.toPayByOrder(this.data.order, this.getOrderDetail.bind(this));
  },

  refreshOrder(){
    var that = this;
    let orderNo = this.data.orderNo;
    if(!orderNo){
      console.error("订单号为空")
      return;
    }
    wx.showToast({
      title: '加载中...',
      icon: 'loading',
      duration: 10000,
      mask: true
    })

    console.log("本地订单：", this.data.order);
    // 获取订单状态和订单数据
    wx.request({
      url: app.data.global_urls.getRefreshOrderStatusUrl(),
      method: 'POST',
      header:{
        'Authorization': `Bearer ${app.data.loginData.token}`,
        'content-type': 'application/json'
      },
      data:{
        ...this.data.order
      },
      success(res){
        wx.hideToast();
        if(10024 === res.data.status){
          console.log('Token过期，需重新登录');
          app._needReLogin(null, null);
        }else if(10000 !== res.data.status){
          // 服务器异常
        }else{
          console.log('订单状态刷新成功: ', res)
          if(res.data.data.order){
            that.setData({
              order: res.data.data.order
            })
          }
        }
      },
      fail(e){
        wx.hideToast();
        console.log('订单状态刷新失败')
      }
    });
  },

  handleRefund(){
    var that = this;
    orderService.orderRefundPromise(this.data.order).then((res)=>{
      that.setData({
        order: res.data
      })
    })
  },

  handleCancelRefund(){
    var that = this;
    orderService.cancelRefundPromise(this.data.order).then((res)=>{
      that.setData({
        order: res.data
      })
    })
  },

  handleMoreOrder(){
    this.data.gotoHome = true;
    wx.reLaunch({
      url: '/pages/index/index',
    });
  },

  handleAddOrderToCart(){
    orderService.addOrderToCart(this.data.orderDetail, this.data.order.postType)
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    if (wx.offBeforePageUnload) {
      wx.offBeforePageUnload();
    }
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})